上一章 Day 21 - React 什麼是Component? 生命週期?
今天來寫我們的第一個Component
先從網頁的導覽列開始
在專案底下新增MyNavbar.js
import React, { Component } from 'react';
import {
    Collapse,
    Nav,
    Navbar,
    NavbarBrand,
    NavbarToggler,
    NavItem,
    NavLink
} from 'reactstrap';
import {
    BrowserRouter,
    Route,
    Switch,
    Link
} from 'react-router-dom';
import logo from './logo.svg';
class MyNavbar extends Component {
    constructor(props) {
        super(props);
        this.state = {
            collapse: true
        };
        this.toogleNavbar = this.toogleNavbar.bind(this);
    }
    toogleNavbar() {
        this.setState({
            collapse: !this.state.collapse
        });
    }
    render() {
        return (
            <Navbar color="dark" dark>
                <NavbarBrand href="/" className="mr-auto">
                    <img
                        alt=""
                        src={logo}
                        width="30"
                        height="30"
                        className="d-inline-block align-top"
                    />
                    {' Aiden'}
                </NavbarBrand>
                <NavbarToggler onClick={this.toogleNavbar} className="mr-2"/>
                <Collapse isOpen={!this.state.collapse} navbar>
                    <Nav className="ml-auto" navbar>
                            <NavItem>
                                <NavLink href="https://ithelp.ithome.com.tw/users/20119510/articles">關於我</NavLink>
                            </NavItem>
                            <NavItem>
                                <NavLink href="https://github.com/AidenYang12345">GitHub</NavLink>
                            </NavItem>
                    </Nav>
                </Collapse>
            </Navbar >
        )
    }
}
export default MyNavbar;
constructor:
當你建立一個constructor, 必須要有super(), 若沒有super()會報錯
而需不需要super(props), 則看你會不會用到props
通常我們會在constructor內設定state初始值
若要改變state, 必須使用setState()
render:
官方文件上說這是Component唯一必須回傳的function,
如果今天你只是要傳回一個Hello world,
其餘方法都可以不用寫, 但一定要有render()